package aiku.numericalcontroloa.common.base;

import aiku.numericalcontroloa.common.constant.HttpStatusConstant;

/**
 * 响应类，包含各种状态，如成功，失败，禁止等
 */
public class BaseResponse {
    /**
     * 成功 返回默认消息
     *
     * @param <T>
     * @return
     */
    protected <T> Result<T> success() {
        return new Result<>(true, HttpStatusConstant.OK, "操作成功");
    }

    /**
     * 成功 返回数据和自定义消息
     *
     * @param data
     * @param message
     * @param <T>
     * @return
     */
    protected <T> Result<T> success(T data, String message) {
        return new Result<>(true, data, HttpStatusConstant.OK, message);
    }

    /**
     * 成功 返回数据 默认消息
     *
     * @param data
     * @param <T>
     * @return
     */
    protected <T> Result<T> success(T data) {
        return new Result<>(true, data, HttpStatusConstant.OK, "操作成功");
    }
/*
* 只给用户看的
*
* */
protected <T> Result<T> success(int status,T data) {
    return new Result<>(true, data, status, "操作成功");
}

    /**
     * 成功 自定义消息
     *
     * @param message
     * @param <T>
     * @return
     */
    protected <T> Result<T> success(String message) {
        return new Result<>(true, HttpStatusConstant.OK, message);
    }

    /**
     * 失败 无数据返回 状态码 500 自定义消息
     *
     * @param <T>
     * @return
     */
    protected <T> Result<T> error(String message) {
        return new Result<>(false, HttpStatusConstant.OK, message);
    }

    /**
     * 自定义错误内容
     *
     * @param <T>
     * @return
     */
    protected <T> Result<T> error(T data, int code, String message) {
        return new Result<>(false, data, code, message);
    }

    /**
     * 未登录（授权）操作 状态码401
     *
     * @param <T>
     * @return
     */
    protected <T> Result<T> unAuthorized() {
        return new Result<>(false, HttpStatusConstant.UNAUTHORIZED, "请登陆后操作");
    }

    /**
     * 权限不足 状态码403
     *
     * @param <T>
     * @return
     */
    protected <T> Result<T> forbidden() {
        return new Result<>(false, HttpStatusConstant.FORBIDDEN, "您没有权限访问这个页面/请求");
    }

    /**
     * 请求不支持或页面未找到 状态码404
     *
     * @param <T>
     * @return
     */
    protected <T> Result<T> notFound() {
        return new Result<>(false, HttpStatusConstant.NOT_FOUND, "没有找到这个页面/请求");
    }
}
